package com.qiaoba.auth.service;

import com.qiaoba.api.auth.service.OnlineUserApiService;
import com.qiaoba.auth.entity.OnlineUser;
import com.qiaoba.auth.entity.param.OnlineUserParam;
import com.qiaoba.common.base.entity.BasePage;

import javax.servlet.http.HttpServletRequest;

/**
 * 在线用户 服务层
 *
 * @author ailanyin
 * @version 1.0
 * @since 2023/5/25 17:15
 */
public interface OnlineUserService extends OnlineUserApiService {

    /**
     * 删除(强退)
     *
     * @param deviceSn  设备号
     * @param deleteOwn 是否是删除自己
     */
    void deleteOne(String deviceSn, Boolean deleteOwn);

    /**
     * 删除在线用户相关信息
     *
     * @param deviceSn 设备号
     * @return 删除的用户在线信息
     */
    OnlineUser deleteOnlineInfo(String deviceSn);

    /**
     * 检查设备是否是最新登陆的设备
     *
     * @param username username
     * @param deviceSn deviceSn
     * @return 结果
     */
    Boolean checkIsLastLogged(String username, String deviceSn);

    /**
     * 新增在线用户
     *
     * @param request  request
     * @param deviceSn 设备号
     * @param username 登陆账号
     * @param nickname 用户姓名
     */
    void insert(HttpServletRequest request, String deviceSn, String username, String nickname);

    /**
     * 分页查询列表
     *
     * @param pageNum  pageNum
     * @param pageSize pageSize
     * @param param    查询条件
     * @return list
     */
    BasePage selectPageList(Integer pageNum, Integer pageSize, OnlineUserParam param);
}
